package dp2.tablet.proyecto.gestores;


import java.util.ArrayList;
import java.util.List;


import dp2.tablet.proyecto.bean.*;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

public class GestorPuntoVenta extends SQLiteOpenHelper {
	
	/*TABLA PUNTO VENTA*/
	private static final int DATABASE_VERSION = 1;
	private static final String DATABASE_NAME = "Tablet";
	private static final String TABLE_PUNTOVENTA = "PuntoVenta";
	private static final String KEY_ID = "idpuntoventa";
	private static final String KEY_DESCRIPCION = "descripcion";
	private static final String KEY_UBIGEO = "Ubigeo";
	private static final String KEY_COORDENADA1 = "coordenada1";
	private static final String KEY_COORDENADA2 = "coordenada2";
	
	
	/*TABLA PUNTO_VENTA X TRABAJADOR*/
	
	private static final String TABLE_PUNTOXTRABAJADOR= "PuntoVentaXTrabajador";
	private static final String KEY_ESTADO= "estado";
	
	public GestorPuntoVenta(Context context) {
		super(context, DATABASE_NAME, null, DATABASE_VERSION);
		crear();
	}
	
	// Creating Tables
		@Override
		public void onCreate(SQLiteDatabase db) {		
			String CREATE_USUARIO_TABLE = "CREATE TABLE " + TABLE_PUNTOVENTA + "("
					+ KEY_ID + " INTEGER PRIMARY KEY," + KEY_UBIGEO +" TEXT ,"+KEY_DESCRIPCION +" TEXT,"+KEY_COORDENADA1+" TEXT,"+KEY_COORDENADA2+" TEXT)";
			
			String CREATE_PTOXTRABAJADOR_TABLE = "CREATE TABLE " + TABLE_PUNTOXTRABAJADOR + "("
					+ KEY_ID + " INTEGER ,"+KEY_ESTADO+  " INTEGER)";
			db.execSQL(CREATE_USUARIO_TABLE);
			db.execSQL(CREATE_PTOXTRABAJADOR_TABLE);
		}
		
		
		public void crear() {
			SQLiteDatabase db = this.getWritableDatabase();
			db.execSQL("DROP TABLE IF EXISTS " + TABLE_PUNTOVENTA);
			db.execSQL("DROP TABLE IF EXISTS " + TABLE_PUNTOXTRABAJADOR);
			onCreate(db);
			db.close();
		}
		
		@Override
		public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
			// Drop older table if existed
			db.execSQL("DROP TABLE IF EXISTS " + TABLE_PUNTOVENTA);

			// Create tables again
			onCreate(db);
		}
		
		public void addPtoVenta(PuntoVentaBean pto) {
			SQLiteDatabase db = this.getWritableDatabase();

			ContentValues values = new ContentValues();
			values.put(KEY_ID, pto.getIdpuntoventa()); 
			values.put(KEY_UBIGEO, pto.getUbigeo());
			values.put(KEY_DESCRIPCION, pto.getDescripcion());
			values.put(KEY_COORDENADA1, pto.getCoordenada1());
			values.put(KEY_COORDENADA2, pto.getCoordenada2());
			
			// Inserting Row
			db.insert(TABLE_PUNTOVENTA, null, values);
			db.close(); // Closing database connection
		}
		
		public void addPtoVentaValidos(Integer idptoventa,Integer estado) {
			SQLiteDatabase db = this.getWritableDatabase();

			ContentValues values = new ContentValues();
			values.put(KEY_ID, idptoventa); 
			values.put(KEY_ESTADO, estado);

			
			// Inserting Row
			db.insert(TABLE_PUNTOXTRABAJADOR, null, values);
			db.close(); // Closing database connection
		}
		
		
		public PuntoVentaBean getPtoVenta(String strIdPtoVenta) {
			SQLiteDatabase db = this.getReadableDatabase();

			Cursor cursor = db.query(TABLE_PUNTOVENTA, new String[] { KEY_ID,
					KEY_UBIGEO,KEY_DESCRIPCION,KEY_COORDENADA1, KEY_COORDENADA2}, KEY_ID + "=?",
					new String[] { String.valueOf(strIdPtoVenta) }, null, null, null, null);
			PuntoVentaBean objCpto=null;
			if (cursor.getCount()>0){
				cursor.moveToFirst();
				objCpto = new PuntoVentaBean(cursor.getString(0),cursor.getString(1),cursor.getString(2),cursor.getString(3),cursor.getString(4));
			}		
			db.close();
			return objCpto;
		}
		
		public List<PuntoVentaBean> getAllptos() {
			List<PuntoVentaBean> lsPtosVenta = new ArrayList<PuntoVentaBean>();
			// Select All Query
			String selectQuery = "SELECT  * FROM " + TABLE_PUNTOVENTA+" A,"+TABLE_PUNTOXTRABAJADOR + " B WHERE B."+KEY_ID +"= A."+KEY_ID+" and "+KEY_ESTADO+"=1";

			SQLiteDatabase db = this.getWritableDatabase();
			Cursor cursor = db.rawQuery(selectQuery, null);

			// looping through all rows and adding to list
			if (cursor.moveToFirst()) {
				do {
					PuntoVentaBean objPto = new PuntoVentaBean(cursor.getString(0),cursor.getString(1),cursor.getString(2),cursor.getString(3),cursor.getString(4));
					// Adding tipoEvento to list
					lsPtosVenta.add(objPto);
				} while (cursor.moveToNext());
			}

			// return tipoEvento list
			return lsPtosVenta;
		}

		/*public int updateUsuario(UsuarioBean objUsuario) {
			SQLiteDatabase db = this.getWritableDatabase();

			ContentValues values = new ContentValues();
			values.put(KEY_IdUsuario, objUsuario.getIdUsuario());

			// updating row
			return db.update(TABLE_USUARIO, values, KEY_IdUsuario + " = ?",
					new String[] { String.valueOf(objUsuario.getIdUsuario())});
		}*/

		// Deleting single tipoEvento
		/*public void deleteUsuario(UsuarioBean objUsuario) {
			SQLiteDatabase db = this.getWritableDatabase();
			db.delete(TABLE_USUARIO, KEY_IdUsuario + " = ?",
					new String[] { String.valueOf(objUsuario.getIdUsuario()) });
			db.close();
		}*/


		// Getting tipoEvento Count
	/*	public int getUsuarioCount() {
			String countQuery = "SELECT  * FROM " + TABLE_USUARIO;
			SQLiteDatabase db = this.getReadableDatabase();
			Cursor cursor = db.rawQuery(countQuery, null);
			cursor.close();

			// return count
			return cursor.getCount();
		}*/

}
